package org.geektimes.context;

import java.util.Set;

/**
 * 组件上下文
 */
public interface ComponentContext {

    /**
     *生命周期方法
     */
    void init();

    /**
     *上下文销售
     */
    void destroy();

    /**
     *根据名称获取组件
     * @param name
     * @param <C>
     * @return
     */
    <C> C getComponent(String name);

    /**
     * 获取所有组件名称
     * @return
     */
    Set<String> getComponentNames();
}
